import axios from 'axios'
import NProgress from 'nprogress'
// import getUserTempId from './getUserTempId'
import 'nprogress/nprogress.css'
// import store from '@/store'
// 这里是封装我们的axios
// 我们还可以在这封装一些比如进度条的东西 响应的进度
// nprogress库

const request = axios.create({
  // 请求的基本路径
  baseURL: '/api1',
  // 请求超时时间
  timeout: 20000,
  //   headers: {},
})

// // 我们从本地缓存读取token 判断一下 是不是我们的token
// const token = localStorage.getItem('token')

// 请求拦截器
request.interceptors.request.use(
  // 里面是两个回调函数
  //   成功的回调函数 config 就是我们请求的一些参数
  (config) => {
    // 配置请求时开始时的进度条
    NProgress.start()
    // 必须要return config 不然的话会报错
    // 我们可以在这设置一些动态的响应头的数据
    // 我们需要设置一下 请求时生成一个临时用户 id 并且保证每次请求时 你生成的那个是临时用户id 是唯一的
    // 我们就需要把这个临时用户id 保存起来
    // 封装生成唯一用户临时id
    // const token = store.state.user.token
    // if (token) {
    //   config.headers.token = token
    // }
    // config.headers.userTempId = getUserTempId()
    return config
  }
  //   失败的回调函数1
  //   () => {}
)

// 响应拦截器
request.interceptors.response.use(
  // 成功的回调函数 里面的参数 也就是我们请求回来的数据 我们可以在这里修改一下我们数据 等等 也就是我们成功的回调
  // 进度条结束的时候我们也需要去配置 我们需要成功 失败的时候都要去配置
  (response) => {
    NProgress.done()
    // 请求成功的话 状态码是2！！
    return response.data
  },
  //   失败的回调函数
  (error) => {
    NProgress.done()
    return Promise.reject(error.message)
  }
)

export default request
